﻿using System;
using System.Collections.Generic;
using System.Configuration;
using System.IO;
using System.Linq;
using System.Text;
using System.Net.Mail;
using System.Net.Configuration;
//using ProntoCompra.Entidades;

namespace ProntoCompra.Logica
{
    /// <summary>
    /// Envio de correos.
    /// </summary>
    public class LogicMail
    {
        private string _remitente = Banesco.Logica.Properties.Settings.Default.Banesco_Email_Remitente.ToString();
        public string  Remitente {
            get { return _remitente; }
            set { _remitente = value; }
        }

        private string _remitente_mail = Banesco.Logica.Properties.Settings.Default.Banesco_Email_From.ToString();
        public string RemitenteMail {
            get { return _remitente_mail; }
            set { _remitente_mail = value; }
        }


        /// <summary>
        /// Envia un correo a los destinatarios especificados.
        /// </summary>
        /// <param name="destinatario">Destinatarios</param>
        /// <param name="asunto">Asunto del mensaje</param>
        /// <param name="descripcion">Descripcion del mensaje</param>
        /// <param name="bodyhtml">Es HTML</param>
        /// <returns></returns>
        public bool EnviarMensaje(string destinatario, string asunto, string descripcion, bool bodyhtml)
        {
            bool retornar = true;

            MailMessage lm_mensaje = new MailMessage();
            lm_mensaje.From = new MailAddress(RemitenteMail, Remitente);
            lm_mensaje.To.Add(destinatario);
            lm_mensaje.IsBodyHtml = bodyhtml;
            lm_mensaje.Subject = asunto;
            lm_mensaje.Body = descripcion;

            SmtpClient servidor_correo = new SmtpClient();

            servidor_correo.EnableSsl = bool.Parse(ConfigurationSettings.AppSettings["EmailSsl"].ToString());

            try
            {
                servidor_correo.Send(lm_mensaje);
            }
            catch (Exception ex)
            {
                retornar = false;
            }

            return retornar;
        }

        /// <summary>
        /// Envia un correo a los destinatarios especificados. Permite enviar un archivo adjunto en pdf.
        /// </summary>
        /// <param name="destinatario">Destinatarios</param>
        /// <param name="asunto">Asunto del mensaje</param>
        /// <param name="descripcion">Descripcion del mensaje</param>
        /// <param name="bodyhtml">Es HTML</param>
        /// <param name="filename">Nombre del archivo adjunto</param>
        /// <param name="adjunto">Archivo adjunto.</param>
        /// <returns></returns>
        public bool EnviarMensaje(string destinatario, string asunto, string descripcion, bool bodyhtml, string filename, MemoryStream file)
        {
            bool retornar = true;

            MailMessage lm_mensaje = new MailMessage();
            lm_mensaje.From = new MailAddress(RemitenteMail, Remitente);
            lm_mensaje.To.Add(destinatario);
            lm_mensaje.IsBodyHtml = bodyhtml;
            lm_mensaje.Subject = asunto;
            lm_mensaje.Body = descripcion;
            lm_mensaje.Attachments.Add(new Attachment(file, filename, "application/pdf"));

            SmtpClient servidor_correo = new SmtpClient();

            servidor_correo.EnableSsl = bool.Parse(ConfigurationSettings.AppSettings["EmailSsl"].ToString());

            try
            {
                servidor_correo.Send(lm_mensaje);
            }
            catch (Exception)
            {
                retornar = false;
            }

            return retornar;
        }
    }
}
